home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MacWorld: Complete Mac Interactive
/
Macworld Complete Mac Interactive CD)(1994).iso
/
Software
/
More Shareware⁄Freeware
/
NIH Image 1.55 f (non fpu)
/
Macros
/
Line Plot->Data
< prev
next >
Wrap
Text File
|
1993-11-03
|
3KB
|
122 lines
macro 'Convert Line Plot to Points [C]';
{
Requires a binary image conatining a black plot on a white
background. Select the plot before running this macro. It may be
necessary to increase Max Measurements in Options.
}
var
left,top,width,height,i,nPixels,mean,mode,min,max:integer;
begin
RequiresVersion(1.45);
Measure;
GetResults(nPixels,mean,mode,min,max);
if (histogram[0]+histogram[255])<>nPixels then begin
PutMessage('This macro only works on binary images.');
exit;
end;
if histogram[0]<histogram[255] then begin
PutMessage('This macro requires a black plot on a white background.');
exit;
end;
SaveState;
GetRoi(left,top,width,height);
if width=0 then begin
PutMessage('Please select the line plot.');
exit;
end;
Duplicate('Particles');
i:=0;
SetForegroundColor(0);
SetLineWidth(1);
repeat
MoveTo(i,0);
LineTo(i,height);
i:=i+2;
until i>width;
RotateRight(true);
SetOptions('X-Y Center');
LabelParticles(false);
SetParticleSize(1,999999);
InvertY(false);
AnalyzeParticles;
RestoreState;
end;
macro 'Plot Points [P]';
{
Plots the data points contained in the X and Y results columns. Note
that X and Y are reversed because Analyze Particles scans from top
to bottom, not left to right.
}
var
xmin,xmax,ymin,ymax,i,xscale,yscale:real;
width,height,margin,pwidth,pheight:integer;
begin
SaveState;
margin:=40;
width:=500;
height:=300;
xmin:=999999;
xmax:=-999999;
ymin:=999999;
ymax:=-999999;
for i:=1 to rCount do begin
if rX[i]<xmin then xmin:=rX[i];
if rX[i]>xmax then xmax:=rX[i];
if rY[i]<ymin then ymin:=rY[i];
if rY[i]>ymax then ymax:=rY[i];
end;
SetNewSize(width,height);
SetForeground(255);
SetBackground(0);
MakeNewWindow('Plot');
pwidth:=width-2*margin;
pheight:=height-2*margin;
xscale:=pheight/(xmax-xmin);
yscale:=pwidth/(ymax-ymin);
SetForeground(255);
SetBackground(0);
MoveTo(margin,margin);
for i:=1 to rCount do begin
LineTo(margin+(rY[i]-ymin)*yscale,margin+(rX[i]-xmin)*xscale);
end;
MakeRoi(margin,margin,pwidth+1,pheight+2);
MoveTo(margin,margin);
LineTo(margin+pwidth,margin);
MoveTo(margin,margin);
LineTo(margin,margin+pheight);
FlipVertical;
KillRoi;
SetFont('Geneva');
SetFontSize(9);
SetText('Centered');
MoveTo(margin+4,margin+pheight+12);
writeln(ymin:1:2);
MoveTo(margin+pwidth,margin+pheight+12);
writeln(ymax:1:2);
SetText('Right Justified');
MoveTo(margin-2,margin+pheight-5);
writeln(xmin:1:2);
MoveTo(margin-2,margin);
writeln(xmax:1:2);
RestoreState;
end;
macro 'Clear Outside [O]'
{Outline the line plot with the wand tool and then use this macro to}
{erase everything else.}
begin
Copy;
SelectAll;
Clear;
RestoreRoi;
Paste;
KillRoi;
end;